iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 22
0
自我挑戰組

Access VBA的眉眉角角系列 第 22

Access VBA 的眉眉角角Day22: QRCode的建立

  • 分享至 

  • xImage
  •  

QRCode近幾年來已日益普及,智慧型手機的流行帶動了這種編碼的使用率。相信程式開發上,多多少少也會遇到產生QRCode需求的情況,筆者也是因為工作的關係,才接觸到這塊,上網搜尋了不少的解決方案,有些需要外掛ActiveX來協助處理,或者要另外購買軟體的,我就都先略過了,在Excel上,有一套由Excel繪圖物件方式產生QR-Code的程式可用,網址如下:
barcode-vba-macro-only

但由於該程式僅適用於Excel上,因此這個項目,就僅供參考,未來有機會再來看看是否能移植到Access上面。

今天要介紹的,是透過Google Charts API來達成,我們可以參考以下網站:
Google Charts Infographics - QR Codes

目前網頁上寫說「Warning: This API is deprecated. Please use the actively maintained Google Charts API instead. See our deprecation policy for details.」,這部份Google似乎已不再維護,但尚未讓此服務中斷,目前使用還算正常,但未來就不是那麼確定。

以下程式碼,請建立一組新的模組存放:

Private Declare Function URLDownloadToFile Lib "urlmon" _
    Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
    ByVal szURL As String, ByVal szFileName As String, _
ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
 
Function DownloadFile(url As String, LocalFileName As String) As Boolean
    If URLDownloadToFile(0, url, LocalFileName, 0, 0) = 0 Then
        DownloadFile = True
    End If
End Function
 
Sub DownloadQRcode(url As String, pngName As String, size As Integer)
     ' Pixel Size S, M, L: 160, 260, 360
    url = URLEncodeUTF8(url)
    DownloadFile "http://chart.apis.google.com/chart?cht=qr&chs=" & size & "x" & size & "&chl=" & url, pngName
End Sub

傳遞網址的部份,有加上上一篇提到的URLEncodeUTF8子程式來轉換字串,透過這層轉換,產生的QR-Code才會正確。

以下為測試用的程式碼,請放模組中進行測試:

Sub DownloadQRcode測試()
    Dim strQRCodeMsg As String
    Dim strSavePathFile As String
    
    'QR-Code訊息
    strQRCodeMsg = "這是Google Charts API QR-Code產生測試"
    
    '存檔路徑
    strSavePathFile = "d:\temp\QR_Google.png"
    
    '下載生成的QRCode影像檔
    DownloadQRcode strQRCodeMsg, strSavePathFile, 300
    
    '開啟檔案
    RunCMD2 strSavePathFile, True, False, 0
    
End Sub

執行後,會產生此檔案,並開啟此檔案,有此需求的,可以透過這個子程式,產生PNG檔案後,將路徑紀錄到資料庫中,待產生報表時,將路徑寫到圖形物件上,即可使用,亦可將檔案附加到資料庫中,以OLE物件儲存,但筆者不是那麼建議,存取效率可能不會太高。
http://ithelp.ithome.com.tw/upload/images/20161213/20007221dUVR0q9Kjx.png

以上的介紹,希望對各位有幫助。


上一篇
Access VBA 的眉眉角角Day21: XML/HTML特殊字元轉換與URL加碼與解碼
下一篇
Access VBA 的眉眉角角Day23: 呼叫Google翻譯
系列文
Access VBA的眉眉角角30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言